pub fn new_birthday_probability(n: u32) -> f64 {
    // calc prob of `nobody's birthday is the same`
    let mut prob_not_same = 1.0;
    for i in 1..=n {
        // the i'th person can select (365-i+1) days from 365 days
        prob_not_same *= (365.0 - (i - 1) as f64) / 365.0;
    }

    // the contrast, the prob of `at least two people's birthday is the same`
    1.0 - prob_not_same
}
